var metadataType = 1;
var is = 0;

layui.use(['table', 'admin', 'ax', 'func', 'layer', 'element'], function () {
    var $ = layui.$;
    var table = layui.table;
    var $ax = layui.ax;
    var admin = layui.admin;
    var func = layui.func;
    var layer = layui.layer;

    /**
     * 元数据管理表管理
     */
    var Metadata = {
        tableId: "metadataTable"
    };


    /**
     * 初始化表格的列
     */
    Metadata.initColumn = function () {
        return [[
            {type: 'checkbox'},
            {field: 'metadataId', hide: true, title: '主键id'},
            {field: 'metadataType', sort: false, title: '元数据类型。1代表业务元；2代表技术元；；3代表管理元', hide: true},
            {field: 'metadataNumber', sort: false, title: '数据编号', align: "center", width: 165},
            {field: 'metadataName', sort: false, title: '数据名称', align: "center", width: 225},
            {field: 'metadataTotal', sort: false, title: '数据量', align: "center", width: 80},
            {field: 'metadataDetail', sort: false, title: '描述', align: "center"},
            {field: 'tableName', sort: false, title: '对应数据库表名', hide: true},
            {field: 'isDelete', sort: false, title: '1代表可用；0代表删除', hide: true},
            {align: 'center', toolbar: '#tableBar', title: '操作', width: 200}
        ]];
    };
    /**
     * 点击业务元数据
     */
    $("#serviceMetadata").click(function () {
        metadataType = 1;
        var queryData = {};
        queryData['metadataType'] = 1
        table.reload(Metadata.tableId, {
            where: queryData, page: {curr: 1}
        });
    })


    /**
     * 点击技术元数据
     */
    $("#technologyMetadata").click(function () {
        metadataType = 2;
        var queryData = {};
        queryData['metadataType'] = 2
        table.reload(Metadata.tableId, {
            where: queryData, page: {curr: 1}
        });
    })


    /**
     * 点击管理元数据
     */
    $("#manageMetadata").click(function () {
        metadataType = 3;
        var queryData = {};
        queryData['metadataType'] = 3
        table.reload(Metadata.tableId, {
            where: queryData, page: {curr: 1}
        });
    })


    /**
     * 点击查询按钮
     */
    Metadata.search = function () {
        var queryData = {};

        queryData['metadataName'] = $('#metadataName').val();
        queryData['metadataNumber'] = $('#metadataNumber').val();

        table.reload(Metadata.tableId, {
            where: queryData, page: {curr: 1}
        });
    };

    /**
     * 弹出添加对话框
     */
    Metadata.openAddDlg = function () {
        layer.open({
            title: '添加元数据管理表',
            type: 2,
            content: Feng.ctxPath + '/metadata/add?metadataType=' + metadataType,
            tableId: Metadata.tableId,
            area: ['80%', '80%'],
            end: function () {
                table.reload(Metadata.tableId);
            }
        });
    };


    /**
     * 数据删除
     */
    $("#btnDelete").click(function () {
        if (ids.length == 0) {
            Feng.error("请至少选择一条数据")
            return;
        }
        if (ids.length == 1) {
            var operation = function () {
                $.ajax(Feng.ctxPath + '/metadata/deleteMetadata', {
                    data: {
                        arr: ids
                    },
                    //开启序列化
                    traditional: true,
                    success: function (res) {
                        // console.log(res)
                        if (res == ids.length) {
                            Feng.success('删除成功')
                            table.reload(Metadata.tableId);
                        }
                    },
                    error: function () {
                        Feng.error('删除失败')
                    }
                })
            };
            Feng.confirm("是否删除这条数据?", operation);
        }
        if (ids.length > 1) {
            var operation = function () {
                $.ajax(Feng.ctxPath + '/metadata/deleteMetadata', {
                    data: {
                        arr: ids
                    },
                    //开启序列化
                    traditional: true,
                    success: function (res) {
                        // console.log(res)
                        if (res == ids.length) {
                            Feng.success('删除成功')
                            table.reload(Metadata.tableId);
                        }
                    },
                    error: function () {
                        Feng.error('删除失败')
                    }
                })
            };
            Feng.confirm("是否删除这" + ids.length + "条数据?", operation);
        }
    })


    // 渲染表格
    var tableResult = table.render({
        elem: '#' + Metadata.tableId,
        url: Feng.ctxPath + '/metadata/list',
        page: true,
        height: "full-158",
        cellMinWidth: 100,
        skin: 'line',
        cols: Metadata.initColumn(),
        done: function (res, curr, count) {
            // console.log(res)
            $('tr').css('background-color', '#ffffff')
            //第一次页面进来的时候默认选中业务元数据
            if (is == 0) {
                var queryData = {};
                queryData['metadataType'] = 1

                //更新所有元数据中的数据量
                $.ajax(Feng.ctxPath + '/metadata/metadataTotal', {
                    type: "POST",
                    async: false,
                    data: JSON.stringify(res.data),
                    contentType: "application/json;charsetset=UTF-8",//必须
                    dataType: "json",
                    //开启序列化
                    // traditional: true,
                    success: function (data) {
                        // console.log(data)
                        table.reload(Metadata.tableId, {
                            where: queryData, page: {curr: 1}
                        });
                        is = is + 1;
                    },
                    error: function () {
                        Feng.error("更新表数据量失败")
                    }
                })
                if (is == 0) {
                    table.reload(Metadata.tableId, {
                        where: queryData, page: {curr: 1}
                    });
                    is = is + 1;
                }
            }
            table_data = res.data;

        }
    });

    /**
     * 获取表格复选框内的值
     */
    var table_data = new Array();
    var ids = new Array();
    table.on('checkbox(' + Metadata.tableId + ')', function (obj) {
        // console.log(obj)
        if (obj.checked == true) {
            if (obj.type == 'one') {
                ids.push(obj.data.metadataId);
            } else {
                for (var i = 0; i < table_data.length; i++) {
                    ids.push(table_data[i].metadataId);
                }
            }
        } else {
            if (obj.type == 'one') {
                for (var i = 0; i < ids.length; i++) {
                    if (ids[i] == obj.data.metadataId) {
                        ids.splice(i, 1);
                    }
                }
            } else {
                for (var i = 0; i < ids.length; i++) {
                    for (var j = 0; j < table_data.length; j++) {
                        if (ids[i] == table_data[j].metadataId) {
                            ids.splice(i, 1);
                        }
                    }
                }
            }
        }
    });


    // 搜索按钮点击事件
    $('#btnSearch').click(function () {
        Metadata.search();
    });

    // 添加按钮点击事件
    $('#btnAdd').click(function () {

        Metadata.openAddDlg();

    });

    // 工具条点击事件
    table.on('tool(' + Metadata.tableId + ')', function (obj) {
        var data = obj.data;
        var layEvent = obj.event;

        if (layEvent === 'editData') {
            Metadata.editData(data);
        } else if (layEvent === 'lookData') {
            Metadata.lookData(data);
        }
    });

    /**
     * 编辑数据项
     * @param data
     */
    Metadata.editData = function (data) {
        window.location.href = Feng.ctxPath + '/metadataCol?metadataId=' + data.metadataId + '&tableName=' + data.tableName
    }


    /**
     * 查看数据
     * @param data
     */
    Metadata.lookData = function (data) {
        // console.log(data)
        if (data.metadataTotal == 0) {
            Feng.error("数据量为0,无需查看")
            return;
        }
        window.location.href = Feng.ctxPath + '/metadata/metadataDetail?tableName=' + data.tableName
    }

    /**
     * 点击数据日志
     */
    //TODO 数据日志待完成
    $("#dataLog").click(function () {
        layer.open({
            title: '数据日志',
            type: 2,
            content: Feng.ctxPath + '',
            tableId: Metadata.tableId,
            area: ['80%', '80%'],
            // end: function () {
            //     table.reload(Metadata.tableId);
            // }
        });
    })
});
